#pragma once//防止被重复包含
#include<iostream>
#include<time.h>
#include<string>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
//小组件实现
namespace logs
{
    namespace util
    {
        // 1 获取系统时间
        class Date
        {
        public:
            static time_t now()
            {
                return (time_t)time(nullptr);
            }

        };
        // 2 判断文件是否存在
        // 3 获取文件所在路径
        // 4 创建目录
         class file
        {
        public:
            static bool exits(const std::string& filename)
            {
                return access(filename.c_str(), F_OK) == 0;//0表示找到了
            }
            // static bool exits2(const std::string& filename)
            // {
            //     struct stat st;
            //     if(stat(filename.c_str(),&st) < 0)
            //         return false;
            //     return true;    
            // }
            static std::string pathname(const std::string& path)
            {
                int pos = path.find_last_of("/\\",-1);
                std::string ret = path.substr(0, pos);
                return ret;
            }
            static void CreateDreactor(const std::string& path)
            {
                int pos = 0;
                int front = 0;
                while(pos != -1)
                {
                    pos = path.find_first_of("/\\",pos);
                    // ./test/test.c
                    std::string pathname = path.substr(0,pos);
                    if(pos == -1)// test.c
                    {
                        mkdir(pathname.c_str(),0777);
                    }
                    else
                        pos = pos + 1;//继续往后找目录分隔符
                    if(exits(pathname))//如果目录已经存在就不创建了
                        continue;
                    mkdir(pathname.c_str(),0777);
                } 
            }
        };
    };
};